package ProjectoX;

import java.awt.Rectangle;

public class Estrella extends PowerUpMovil {

	protected String [] NombresSpriteMov;
	protected String [] NombresSpriteMovLarge;
	private boolean enTierra;
	private boolean puedeAccionar = true;
	
	public Estrella (Nivel N, Posicion P, int Fila, int Columna) {
		super (N, P, Fila, Columna);
		NombresSpriteMov = new String [] {"PowerUp/estrella.png"};
		NombresSpriteMovLarge = new String [] {"PowerUp/estrella.png"};
		setSpriteName(NombresSpriteMovLarge);
		setFrameSpeed(6);
		enTierra = true;
	}

	public void accion(Mario m) {

	}

	public void puedeAccionar() {
		puedeAccionar = true;
	}
	
	public void setShort(){
		FrameActual = 0;
		setSpriteName(NombresSpriteMov);
		GetMov().setMovHorizontal(POWERUP_SPEED);
		GetMov().setMovVertical(POWERUP_SPEED);
	}
	
	public void colision (Enemigo E) {
		Mov.setMovHorizontal(-Mov.getVelX());
		Pos.setX(Pos.getX()+Mov.getVelX());
	}
	
	public void colision (Componente C) {
		Rectangle r1 = C.getBounds();
		Rectangle Area = r1.intersection(this.getBounds());
		if ((Area.getHeight()<=8)) {
			if ((Area.getWidth()>8)) {
			if (Area.getY()<C.getPos().getY()+30){
				if (Mov.getVelY()>0)
					detenerSalto(C);
				}
			else invertirSalto();
		}}
		else {
			if (Area.getX()<C.getPos().getX()+30){
				Pos.setX(C.getPos().getX()-AnchoIm);
				GetMov().setMovHorizontal(-POWERUP_SPEED);
			}				
			else {
				Pos.setX(C.getPos().getX()+AnchoIm+1);
				GetMov().setMovHorizontal(POWERUP_SPEED);
			}				
		}
	}

	private void invertirSalto() {
		GetMov().setMovVertical(POWERUP_SPEED);	
	}
	
	private void detenerSalto(Componente C) {
		Pos.setY(C.getPos().getY()-AltoIm+1);
		enTierra= true;
		GetMov().setMovVertical(0);
	}
	
	public void actuar(){
		super.actuar();
		Pos.setX(Pos.getX()+GetMov().getVelX());
		Pos.setY(Pos.getY()+GetMov().getVelY());
		if (enTierra)
			GetMov().setMovVertical(POWERUP_SPEED);
		enTierra = false;
		if (Pos.getY()>800) {
			remove();
		}
		
	}

	public void colision(Mario m) {
		if (puedeAccionar) {
			puedeAccionar = false;
			remove();
			if (m.esInvencible())
				miNivel.incrementarPuntaje(35);	
			else
				miNivel.incrementarPuntaje(20);	
			m.setInvencible();
		}
	}


	public void colision(MarioGrande m) {
		if (puedeAccionar) {
			puedeAccionar = false;
			remove();
			if (m.esInvencible())
				miNivel.incrementarPuntaje(35);	
			else
				miNivel.incrementarPuntaje(20);	
			m.setInvencible();
		}
	}
	
	
	public void colision(MarioDisparo m) {
		if (puedeAccionar) {
			puedeAccionar = false;
			remove();
			if (m.esInvencible())
				miNivel.incrementarPuntaje(35);	
			else
				miNivel.incrementarPuntaje(20);	
			m.setInvencible();
		}
	}
	
	
}


	


